package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.enums.CommentType;
import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;

/**
 * @author feihao
 * @version 1.0
 * @date 2021/7/1 19:43
 */

//查询好友动态：
public interface QuanZiApi {

    /**
     * 根据登录用户的id,查询他的好友发布的动态。
     *
     * @param userId
     * @param page
     * @param size
     * @return
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer page, Integer size);


    /**
     * 发布动态：
     *
     * @param publish
     * @return
     */
    String savePublish(Publish publish);


    /**
     * 查询系统推荐好友动态
     *
     * @param userId
     * @param page
     * @param size
     * @return
     */
    PageInfo<Publish> queryRecommendPublishList(Long userId, Integer page, Integer size);


    /**
     * 根据id查询动态（点击评论时，弹出动态详情）
     *
     * @param id
     * @return
     */
    Publish queryPublishById(String id);


    /**
     * 点赞
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean likeComment(Long userId, String publishId);

    /**
     * 取消点赞
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLikeComment(Long userId, String publishId);

    /**
     * 查询点赞数
     *
     * @param publishId
     * @return
     */
    Long queryLikeCount(String publishId);

    /**
     * 查询用户是否点赞该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLike(Long userId, String publishId);


    /**
     * 喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean loveComment(Long userId, String publishId);

    /**
     * 取消喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLoveComment(Long userId, String publishId);

    /**
     * 查询喜欢数
     *
     * @param publishId
     * @return
     */
    Long queryLoveCount(String publishId);

    /**
     * 查询用户是否喜欢该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLove(Long userId, String publishId);


    /**
     * 查询评论
     *
     * @param publishId
     * @param page
     * @param pageSize
     * @return
     */

    PageInfo<Comment> queryCommentList(String publishId, Integer page, Integer pageSize);


    /**
     * 发表评论
     *
     * @param userId
     * @param publishId
     * @param content
     * @return
     */
    Boolean saveComment(Long userId, String publishId, String content);

    /**
     * 查询评论数
     *
     * @param publishId
     * @return
     */
    Long queryCommentCount(String publishId);


    /**
     * 查询对我的评论、点赞、喜欢的消息列表
     *
     * @return
     */
    PageInfo<Comment> queryCommentListByUser(Long userId, CommentType commentType, Integer page, Integer pageSize);


    /**
     * 根据用户Id,查询本用户的所有动态
     *
     * @param userId
     * @return
     */
    PageInfo<Publish> queryUserPublish(Long userId, Integer page, Integer pageSize);
}
